package org.jaaksi.demo.ptr.util;

import com.alibaba.fastjson.JSON;
import okhttp3.Call;
import okhttp3.Response;

/**
 * Created by Fcy on 2016/3/18.<br/>
 */
public abstract class ModuleCallback<T>
        extends com.zhy.http.okhttp.callback.Callback<T>
{
	private Class<T> cls;

	public ModuleCallback(Class<T> cls)
	{
		this.cls = cls;
	}

	/**
	 * 无网络，无法连接服务器，404，解析失败等都会走到这里
	 * 
	 * @param call
	 * @param e
	 */
	@Override
	public void onError(Call call, Exception e)
	{
		if (!(e instanceof com.alibaba.fastjson.JSONException))
		{
			LogUtil.e("onError url", call.request().url().url().toString());
		}
		LogUtil.e("onError message", e.toString());
		onResponse(null);
	}
//	public void onError(Call call, Exception e)
//	{
//		if (!(e instanceof com.alibaba.fastjson.JSONException))
//		{
//			LogUtil.e("onError url", call.request().url().url().toString());
//		}
//		LogUtil.e("onError message", e.toString());
//	}

	/**
	 * response.body().string() !=null才会回调这里
	 * 
	 * @param response
	 *            服务器响应的response
	 * @return
	 * @throws Exception
	 */
	@Override
	public T parseNetworkResponse(Response response) throws Exception
	{ // 在回调这个方法前，好像已经判过了，这里无需判断。返回值会回调给onResponse
		LogUtil.e("request url", response.request().url().url().toString());
//		LogUtil.e("success " + cls.getSimpleName(), response.body().string());
		// fixme 不知道什么原因 上面写了response.body().string()之后下面就=""了
		return JSON.parseObject(response.body().string(), cls);
	}
}
